﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace PCclient2._0
{
    class XMLOperation
    {
        private XmlDataDocument xmlDoc;//声明全局变量xmlDoc,类型是XmlDataDocument

        private void xmlLoad()
        {
            xmlDoc = new XmlDataDocument();
            xmlDoc.Load(@"./config.xml");//文件名是trytry.xml
        }
        //点击添加按钮，添加数据
        public void writeIP(string ip)
        {
            xmlLoad();//调用加载xml文件的方法
            XmlNode xmldocSelect = xmlDoc.SelectSingleNode("config");//xml文件的根结点是user

            XmlElement el = xmlDoc.CreateElement("ip");//添加person节点
            //el.SetAttribute("name", "云云");//添加属性名，及属性值
            //el.SetAttribute("sex", "女");
            //el.SetAttribute("age", "25");
            el.InnerText = ip;

            //XmlElement xesub1 = xmlDoc.CreateElement("pass");//添加person节点的子节点
            //xesub1.InnerText = "123";//节点pass下的值是123
            //el.AppendChild(xesub1);//将节点pass添加到父节点person下
            //XmlElement xesub2 = xmlDoc.CreateElement("address");
            //xesub2.InnerText = "中国西安";
            //el.AppendChild(xesub2);

            xmldocSelect.AppendChild(el);//将节点person加到根结点xmldocSelect下
            xmlDoc.Save(@"./config.xml");//保存，这个十分重要，否则没有数据

        }

        public bool isIPExit(string ip)
        {
            xmlLoad();
            XmlNodeList nodeList = xmlDoc.GetElementsByTagName("ip");
            if (nodeList.Count > 0)
            {
                foreach (XmlNode node in nodeList)
                {
                    XmlElement xe = (XmlElement)node;//把节点node转换成XmlElement型
                    if (xe.InnerText == ip)
                    {
                        return true;
                    }
                }
            }
            return false;
        }

        public List<string> readIP()
        {
            List<string> strList = new List<string>();
            xmlLoad();//调用加载xml文件的方法
            XmlNodeList list = xmlDoc.GetElementsByTagName("ip");//获得根节点user下的所有子节点

            //遍历所有子节点

            foreach (XmlNode node in list)
            {
                XmlElement xe = (XmlElement)node;//把节点node转换成XmlElement型
                strList.Add(xe.InnerText);
            }
            return strList;
        }

        public void writeConfig(string key, string value)
        {
            xmlLoad();//调用加载xml文件的方法
            XmlNodeList list = xmlDoc.GetElementsByTagName(key);
            XmlNode xmldocSelect = xmlDoc.SelectSingleNode("config");
            
            if (list.Count == 0)
            {
                XmlElement el = xmlDoc.CreateElement(key);//添加person节点
                el.InnerText = value;
                xmldocSelect.AppendChild(el);
            }
            else
            {
                XmlElement xe = (XmlElement)list[0];
                xe.InnerText = value;
            }


            //将节点person加到根结点xmldocSelect下
            xmlDoc.Save(@"./config.xml");//保存，这个十分重要，否则没有数据
        }

        public string readConfig(string key, string defaultValue)
        {
            string result = defaultValue;
            xmlLoad();
            XmlNodeList list = xmlDoc.GetElementsByTagName(key);
            if (list.Count > 0)
            {
                XmlElement xe = (XmlElement)list[0];
                result = xe.InnerText;
            }
            return result;
        }
    }
}
